<?php
// +----------------------------------------------------------------------
// | 海豚PHP框架 [ DolphinPHP ]
// +----------------------------------------------------------------------
// | 版权所有 2016~2019 广东卓锐软件有限公司 [ http://www.zrthink.com ]
// +----------------------------------------------------------------------
// | 官方网站: http://dolphinphp.com
// +----------------------------------------------------------------------

namespace app\business\admin;

use app\admin\controller\Admin;
use app\common\builder\ZBuilder;
use app\business\model\Business as BusinessModel;
use think\Db;

/**
 * 菜单控制器
 * @package app\cms\admin
 */
class Index extends Admin
{
    /**
     * 菜单列表
     * @param null $id 导航id
     * @author 蔡伟明 <314013107@qq.com>
     * @return mixed
     * @throws \think\Exception
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    
    public function index()
    {
        cookie('__forward__', $_SERVER['REQUEST_URI']);
        // 查询
        $map = $this->getMap();
        $list_rows1 = input('list_rows');
        $listRows = isset($list_rows1)?$list_rows1:10;
        if ($this->request->isPost()) {
            $data = $this->request->post();
        }

        // 获取排序
        $order = $this->getOrder();
        if(empty($order)){
            $order='id desc';
        }
        
        $data_list = BusinessModel::where($map)->order($order)->paginate();
        
        // 使用ZBuilder快速创建数据表格
        if(empty($_SERVER["QUERY_STRING"])){
            $excel_url=substr(http().$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"],0,-5)."_export";
        }else{
            $excel_url=substr(http().$_SERVER["SERVER_NAME"].$_SERVER["PHP_SELF"],0,-5)."_export.html?".$_SERVER["QUERY_STRING"];
        }
        $btn_excel = [
            'title' => '导出EXCEL表',
            'icon'  => 'fa fa-fw fa-download',
            'href'  => url($excel_url,'','')
        ];
        
        $province_arr=getFilterarr('business','province');                  //来源去重数组
        $city_arr=getFilterarr('business','city');                          //微信地址去重数组
        $btype_arr=getFilterarr('business','btype');                        //商户类型去重数组
        $lxmember_arr=getFilterarr('business','lxmember');                  //联系工作人员
        return   ZBuilder::make('table')
        ->setPageTitle('爬虫拉取的商户列表') // 设置页面标题
        ->setTableName('business') // 设置数据表名
        ->addOrder('id,mobile,total') // 添加排序
        ->addFilterList('btype',$btype_arr)
        ->addFilterList('province',$province_arr)
        ->addFilterList('city',$city_arr)
        ->addFilterList('status',['0'=>'未联系','1'=>'已联系'])
        ->addFilterList('lxmember',$lxmember_arr)
        ->setSearch(['bname' => '商户名称','mobile'=>'商户手机','address'=>'商户地址']) // 设置搜索参数
        ->addTopButton('custom',$btn_excel)
        ->addColumns([ // 批量添加列
            ['id', 'ID'],
            ['bname', '商户名称'],
            ['btype', '商户类型'],
            ['mobile','商户手机'],
            ['tel','商户座机'],
            ['province', '商户省'],
            ['city', '商户市'],
            ['address', '商户地址'],
            ['status','联系状态','callback',function($v){
                return ($v=='1')?'已联系':'未联系';
            }],
            ['lxmember','联系人'],
            ['right_button', '操作', 'btn']
        ])
        ->hideCheckbox()
        ->setColumnWidth('id', 60)
        ->setColumnWidth('btype,mobile,tel', 120)
        ->setColumnWidth('bname', 150)
        ->setColumnWidth('address', 300)
        ->addRightButton('edit')
        ->setRowList($data_list) // 设置表格数据
        ->fetch(); // 渲染页面
    }
    
    
    /**
     * 商家导出功能
     */
    public function index_export(){
        //添加用户导出记录
        action_log('business_export', 'business', 1, UID, '管理员执行了商家导出的操作!');
        
        // 获取查询条件
        $map = $this->getMap();
        
        // 获取排序
        $order = $this->getOrder();
        if(empty($order)){
            $order='id desc';
        }
        // 数据列表
        $xlsData = BusinessModel::view('business', true)
        ->where($map)->order($order)
        ->select()->toArray()
        ->each( function($item, $key){
            $item->status_show=($item->status=='1')?'已联系':'未联系';
        });
        
        $title="商户信息列表";
        $arrHeader = array('商户ID','商户类型','商户名称','商户手机','商户座机','商户所在省','商户所在市','商户地址','联系状态');
        $fields = array('id','btype','bname','mobile','tel','province','city','address','status_show');
        exportExcel($arrHeader,$fields,$xlsData,$title);
        
    }
    
    
    /**
     * 编辑商家
     */
    public function edit($id=null){
        if ($id === null) $this->error('缺少参数');
        
        // 保存数据
        if ($this->request->isPost()) {
            $data = $this->request->post();
            // 验证
            $result = $this->validate($data, 'Business.edit');
            // 验证失败 输出错误信息
            if(true !== $result) $this->error($result);
            if(isset($data['zuobiao']) && !empty($data['zuobiao'])){
                $zuobiao=explode(',', trim($data['zuobiao']));
                $data['lng']=$zuobiao['0'];
                $data['lat']=$zuobiao['1'];
            }
            if (BusinessModel::update($data)) {
                // 记录行为
                action_log('business_edit', 'business', $data['id'], UID, '修改了商户信息');
                $this->success('编辑成功', cookie('__forward__'));
            } else {
                $this->error('编辑失败');
            }
        }
        
        // 获取数据
        $info = BusinessModel::where('id', $id)->find()->toArray();
        $info['zuobiao_address']=(is_array($info) && count($info)>0)?$info['lng'].','.$info['lat']:'';
        // 使用ZBuilder快速创建表单
        return ZBuilder::make('form')
        ->setPageTitle('编辑') // 设置页面标题
        ->addFormItems([ // 批量添加表单项
            ['hidden', 'id'],
            ['text', 'btype', '商户类型'],
            ['text', 'bname', '商户名称'],
            ['text', 'mobile', '商户手机', ''],
            ['text', 'tel', '商户电话', ''],
            ['bmap','zuobiao','商户坐标','74Gtdz5rHkoI1Vvl3XWnGSXdvZB2AYwz','',$info['zuobiao_address'],'',16],
            ['text', 'province', '商户省', ''],
            ['text', 'city', '商户市', ''],
            ['text', 'district', '商户区', ''],
            ['text', 'address', '商户地址', ''],
            ['radio', 'status', '商户联系状态', '', ['1'=>'已联系','0'=>'未联系']],
            ['text', 'lxmember', '联系人'],
        ])
        ->setFormData($info) // 设置表单数据
        ->fetch();
    }
    
}